// 控制页面访问权限
import router from '@/router'
import store from '@/store'
import nProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 路由的前置守卫
const whiteList = ['/login', '/404'] // 白名单数组 没登录也可以进
router.beforeEach(async(to, from, next) => {
  nProgress.start()
  // console.log(store)
  // 判断 是否登录
  if (store.state.user.token) {
    // 如果登录了
    // 判断访问的是否为 登录页面
    // 发送请求获取用户资料的数据
    if (!store.state.user.userInfo.userId) {
      // 拿到了用户信息
      const { roles } = await store.dispatch('user/getUserInfo')
      // 根据用户信息里的menus进行路由的动态添加
      // roles.menus 可以访问的路由模块
      // varRoutes 所有的动态路由集合
      store.commit('permission/filterRouter', roles)
      next(to.path)
    }
    if (to.path === '/login') {
      // 不让进登录 去主页
      next('/')
    } else {
      next()
    }
  } else {
    // 如果没有登录
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next('/login')
    }
  }
  nProgress.done()
})
